#include "widget.h"
#include "ui_widget.h"
#include <QDebug>
#include <QMouseEvent>

Widget::Widget(QWidget *parent)
        : QWidget(parent), ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 事件过滤器
    // 步骤1：安装事件过滤器
    ui->label->installEventFilter(this);
}

Widget::~Widget()
{
    delete ui;
}

// 步骤2 重写 eventFilter 事件
bool Widget::eventFilter(QObject *obj, QEvent *e)
{
    if (obj == ui->label) {
        if (e->type() == QEvent::MouseButtonPress) {
            auto ev = dynamic_cast<QMouseEvent *>(e);    // 将父类指针转为子类指针
            QString str = QString("事件过滤器中: 鼠标按下了, x=%1, y=%2, globalX=%3, globalY=%4").arg(ev->x()).arg(ev->y()).arg(
                    ev->globalX()).arg(ev->globalY());
            qDebug() << str;
            return true;    //返回true表示用户自己处理了这个事件，不再向下分发事件
        }
    }
    // 其他默认处理
    return QWidget::eventFilter(obj, e);
}
